home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Franz PD / Franz PD Disk #097 (1990-10)(Amiga User Group Deutschland e.V.).zip / Franz PD Disk #097 (1990-10)(Amiga User Group Deutschland e.V.).adf / Prim / Prim.MOD < prev    next >
Text File  |  1989-07-03  |  2KB  |  62 lines

  1. (* Prim - wurde im Jahre 1990 von Marcus Schießer geschrieben
  2.    Das Programm ist Freeware. Das Kopierrecht liegt allein beim Autor.
  3.    Das Programm dient zur Berrechnung von Primzahlen *)
  4.  
  5. MODULE Prim;
  6.  
  7. FROM InOut IMPORT
  8.   WriteLn,WriteCard,WriteString,ReadLongCard;
  9. FROM Arts IMPORT
  10.   Assert;
  11. FROM MathLib0 IMPORT
  12.   sqrt;
  13. FROM SYSTEM IMPORT
  14.   ADR;
  15.  
  16. VAR
  17.   zahl,teiler,anzahl,zahlI,zahlII: LONGCARD;
  18.   dummy: CARDINAL;
  19.   flag: BOOLEAN;
  20.   realzahl: REAL;
  21.  
  22. BEGIN
  23.   WriteLn;
  24.   WriteString("Prim - © 1990 by Marcus Schießer");
  25.   WriteLn;
  26.   WriteString("Zahlen müssen >= 5 und ungerade sein");
  27.   WriteLn;
  28.   WriteString("Von: ");
  29.   ReadLongCard(zahlI);
  30.   WriteString("Bis: ");
  31.   ReadLongCard(zahlII);
  32.   WriteLn;
  33.   IF (zahlI = 5) THEN
  34.     WriteString("2,3,");
  35.   END;
  36.   dummy:= zahlI MOD 2;
  37.   Assert(zahlI>=5,ADR("Zahl ist kleiner als 5!"));
  38.   Assert(dummy#0,ADR("Zahl ist gerade!"));
  39.   flag:=TRUE;
  40.   FOR zahl := zahlI TO zahlII BY 2 DO
  41.   realzahl:=FLOAT(zahl);
  42.     FOR teiler := 3 TO TRUNC(sqrt(realzahl)) BY 2 DO
  43.       dummy:= zahl MOD teiler;     (* Speichere Rest der Division *)
  44.       IF (dummy=0) THEN            (* Rest Null ? *)
  45.         flag:=FALSE;               (* ja, dann mehr als zwei Teiler *)
  46.       END;                         (* nein, dann weiter suchen *)
  47.     END;
  48.     IF flag THEN                   (* 2 Teiler ? *)
  49.       INC(anzahl);                 (* ja, dann Primzahl *)
  50.       WriteCard(zahl,0);
  51.       WriteString(",");
  52.     END;
  53.     flag:=TRUE;
  54.   END;
  55.  
  56.   WriteLn;
  57.   WriteCard(anzahl,0);
  58.   WriteString(" Primzahlen gefunden.");
  59.   WriteLn;
  60.  
  61. END Prim.
  62.